package com.suiwei.base;

import org.junit.jupiter.api.Test;
import java.util.Arrays;
/**
 * @author suiwei
 * @date 2023/4/2 11:17
 */
public class ArrayDemo {
  @Test
  void test() {
    // 数组定义-完整格式，没人用
    int[] arr1 = new int[] {1, 2, 3};
    // 数组定义-简化格式
    int[] arr2 = {1, 2, 3};
    // 数组动态初始化
    int[] arr3 = new int[3];
    /*
       结果：[I@3aeaafa6
       @：分隔符号
       [：当前空间是数组类型的
       I：当前数组是int类型
       3aeaafa6：数组的16进制内存地址
    */
    System.out.println(arr1);
    // 数组遍历;快捷键：arr2.fori,arr2[i].sout
    for (int i = 0; i < arr2.length; i++) {
      System.out.println(arr2[i]);
    }
  }

  /**
   * 二维数组
   */
  @Test
  void twoDimensional() {
    // 完整格式
    int[][] arr1 = new int[][] {{1, 2, 3}, {2, 2, 2}};
    // 简化格式
    int[][] arr2 = {{1, 3}, {2, 2, 2}};
    //动态初始化:2表示有2个一维数组，3表示每个一维数组有3个元素
    //数组必须有固定的长度，第一个[]必须有具体的数，第二个可以没有，但是要用之前必须初始化
    int[][] arr3 = new int[2][3];
    // arr2[0][]；在堆内存中二维数组里面存储的是一维数据的内存地址
    System.out.println(arr2[0]);
    for (int i = 0; i < arr2.length; i++) {
      for (int j = 0; j < arr2[i].length; j++) {
        System.out.println(arr2[i][j]);
      }
    }
  }

  /**
   * Arrays：数组操作工具类，专门操作数组元素
   */
  @Test
  void arrays(){
    int[] arr1 = {11,22,33,44};
    int[] arr2 = {11,22,33,44};
    int[] arr3 = {33,44,11,22};
    //将数组元素拼接为带有格式的字符串
    System.out.println(Arrays.toString(arr1));//[11, 22, 33, 44]
    //比较两个数组内容是否相同
    System.out.println(Arrays.equals(arr1, arr2));
    //对数组进行默认升序排序
    Arrays.sort(arr3);
    System.out.println(Arrays.toString(arr3));
  }
}
